// 这个js我的感觉就是和数据库做交互，get方法从数据库读取数据，post方法，现将postdata存到数据库，再返回给前端
const { exec } = require('../db/mysql')

const getList = (author, keyword) => {
    // author,keyword不是必填的，没有的时候，是查询全部列表，有author时，是查询这个作者的所有博客，只有keyword的时候，是标题模糊查询
    let sql = `select * from blogs where 1=1 `
    if (author) {
        sql += `and author='${author}' `
    }
    if (keyword) {
        sql += `and title like '%${keyword}%' `
    }
    sql += `order by createtime desc;`
    return exec(sql) //return的是一个promise对象，.then中的参数才是我们需要的,是一个数组
    // return [
    //     {
    //         id: 1,
    //         title: '标题1',
    //         content: '内容A',
    //         createment: '1557477194023',
    //         author: 'zhangsan'
    //     }
    // ]
}

const getDetail = id => {
    const sql = `select * from blogs where id='${id}'`
    return exec(sql).then(rows => {
        return rows[0]
    })
    // 查询出来的永远都是一个数组，但是我们需要的是一个obj

    return {
        id: 1,
        title: '标题1',
        content: '内容A',
        createment: '1557477194023',
        author: 'zhangsan'
    }
}

const newBlog = (postdata = {}) => {
    // postdata是需要存到数据库中的
    const title = postdata.title
    const content = postdata.content
    const author = postdata.author
    const createtime = Date.now()
    const sql = `insert into blogs (title,content,author,createtime) values ('${title}','${content}','${author}',${createtime})`
    return exec(sql).then(insertData => {
        console.log('newblogData', insertData)
        return {
            id: insertData.insertId
        }
    })
}

const updateBlog = (id, postdata = {}) => {
    // id是需要修改的列表id, postdata是需要存到数据库中的
    const title = postdata.title
    const content = postdata.content
    const sql = `update blogs set title='${title}',content='${content}' where id=${id};`
    return exec(sql).then(updateDate => {
        if (updateDate.affectedRows > 0) {
            return true
        }
        return false
    })
}

const delBlog = (id, author) => {
    // id是需要删除的列表id
    // 实际项目中的时候要用软删除
    // 这里的author是登录用户的author,添加author可以保证是作者自己删除自己的文章，防止被别人恶意删除
    const sql = `delete from blogs where id=${id} and author='${author}';`
    return exec(sql).then(deleteDate => {
        if (deleteDate.affectedRows > 0) {
            return true
        }
        return false
    })
}

module.exports = {
    getList,
    getDetail,
    newBlog,
    updateBlog,
    delBlog
}
